/*
 * Copyright 2011-2021 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0.
 * See `LICENSE` in the project root for license information.
 */

package me.ijleex.mgmt.system.auth.service;

import java.util.List;

import me.ijleex.mgmt.framework.entity.Result;
import me.ijleex.mgmt.system.role.entity.Role;

/**
 * JwtService.
 *
 * @author liym
 * @since 2020-07-18 21:20 新建
 */
public interface IJwtService {

    // 公钥加密，私钥解密是密送，保证消息即使公开也只有私钥持有者能读懂。
    // 私钥加密，公钥解密是签名，保证消息来源是私钥持有者。

    /**
     * 创建 JWK keyId、公钥、秘钥
     *
     * @return Result
     */
    Result createKeyPair();

    /**
     * 创建 Token
     *
     * @param userId 用户ID
     * @param username 用户名
     * @param password 密码
     * @param roles 角色列表
     * @return Result
     */
    Result createToken(long userId, String username, String password, List<Role> roles);

    /**
     * 验证 Token
     *
     * @param token JWT
     * @return Result
     */
    Result validateToken(String token);

}
